#include "widget.h"
#include "ui_widget.h"

#include <QPdfWriter>
#include <QPageSize>
#include <QMarginsF>

#include <QFile>
#include <QTextDocument>
#include <QPdfWriter>
#include <QTextCursor>
#include <QDir>
#include <QFileDialog>
#include <QDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    this->setWindowTitle("PDF Viewer");
    qDebug()<<QT_VERSION_STR;

    QDir dir;
    qDebug()<<QDir::currentPath(); // "C:/Users/xx/Desktop/QtPro/build-Qt_PDF-Desktop_Qt_5_14_2_MinGW_64_bit-Debug"
    qDebug()<<dir.canonicalPath(); // "C:/Users/xx/Desktop/QtPro/build-Qt_PDF-Desktop_Qt_5_14_2_MinGW_64_bit-Debug"
    dir.cdUp(); // 返回上一级目录
    qDebug()<<QDir::currentPath(); // "C:/Users/xx/Desktop/QtPro"
    qDebug()<<dir.canonicalPath(); // "C:/Users/xx/Desktop/QtPro"
    QString pdfSavePath = dir.canonicalPath();

    // 创建PDF写对象
    QPdfWriter pdf(pdfSavePath+"/Qt_PDF/my.pdf"); // 写入的文件名
    pdf.setObjectName("pdf"); // 设置对象名
    pdf.setCreator("your friend"); // 创建者
    pdf.setTitle("pdf"); // 标题
    pdf.setPageSize(QPageSize(QPageSize::A4));    // 设置PDF页面的大小
    pdf.setPageOrientation(QPageLayout::Orientation::Portrait); // 设置页面的方向（横向或纵向）竖向的
    pdf.setResolution(300); // 设置分辨率为300 DPI
    pdf.setPageMargins(QMarginsF(5,5,5,5)); // 设置页面边距

    QFile file(":/html/pdf.html");
    if (!file.open(QIODevice::ReadOnly)) {
        qDebug()<<file.errorString();
    }

    QTextDocument doc;
    QTextCursor cursor(&doc);
    cursor.insertHtml(file.readAll());

    doc.print(&pdf);

}

Widget::~Widget()
{
    delete ui;
}


// 打开写入pdf的html的内容
void Widget::on_pdf_clicked()
{
    QString fileName = QFileDialog::getOpenFileName(this,"打开html",QDir::currentPath());
    QFile file(fileName);
    if (!file.open(QIODevice::ReadOnly)) {
        qDebug()<<file.errorString();
    }
    ui->textEdit->insertHtml(file.readAll());
}
